package com.example.club.clubmanage.net;

import com.example.club.clubmanage.model.BaseDto;

import java.util.Map;


import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Headers;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.PartMap;
import retrofit2.http.QueryMap;
import rx.Observable;

/**
 * Created by chenguojun on 16/3/29.
 * 网络数据请求接口
 * PS:如果后台服务器返回的数据格式统一，此接口可以再分装只写一个请求。如：
 * {
 *  "data": {},
 *  "timestamp": 1459406169,
 *  "ret": -5092,
 *  "msg": ""
 *  }
 *  请求统一如下：
 *  @POST("mobileApi/{type}")
 *  Observable<Class<T>> deleteBerth(@Path("type") String type,@QueryMap(encoded=true) Map<String, Object> map);
 *  Class类的内容为服务端返回的属性，data为泛型。ret：错误信息代码，msg：提示内容
 *  错误信息统一管理，不用写在每个类中。便于查看，简化代码结构。
 *  Observable.map(new HttpResultFunc<T>())
 */
public interface MyService {

    @Headers("Content-Type: application/x-www-form-urlencoded;charset=utf-8")
    /**
     * 网络请求统一接口,,返回的数据类型需继承BaseDto
     * @param type 不同网络请求类型的路径
     * @param map post请求附带的参数
     * @return,返回继承自BaseDto的分装对象
     */
//    @POST("mobileApi/{type}")
//    Observable<HttpResult<BaseVo>> getData(@Path("type") String type, @QueryMap(encoded = true) Map<String, Object> map);

    @POST("basic/login")// 登录
    Observable<BaseDto> login(@QueryMap(encoded = true) Map<String, Object> map);

}